Resources such as processing and storage capability and network throughput can be shared across a network of computers. The capability of a network to manage and provide access to resources is indicative of a Quality-of-Service (QoS) of the network. Resources can be managed, for example, by allocation of a traffic capacity or a storage capacity, based on the priority of a request generated by any device connected to the network.
QoS is desirable in a network environment because multiple host devices connected to the network environment issue multiple application commands, which require resources that are limited. The multiple application commands, therefore, compete with each other for the resources. Generally, multiple applications running over dispersed host devices issue commands, such as a storage resource request, a network resource request, or a processing resource request, to one or more target devices. For example, in a typical storage area network (SAN) implementation, host devices use commands to store and/or retrieve data from the target devices, which may include routers, storage devices, processing devices, etc. In such a case, the application commands received from the host devices are prioritized at the target devices to provide an expected QoS. Prioritization of commands can be based on various parameters, such as application level classification of the commands.
The commands received at the target devices are generally executed based on a scheduling module or a scheduler. The scheduler places the incoming commands in multiple queues at various ports of the target devices. The scheduler allocates a fair share, i.e., a recommended proportion, of available resources for the execution of the incoming commands. In order to achieve fairness in resource allocation, the scheduler may allocate resources to at least one incoming command from each queue after a fixed period of time.
In certain cases, the expected QoS may not get achieved. For example, a certain amount of leakage of input/output (I/O) commands may occur from a queue that is low on resource allocation. Accordingly, the execution of the commands or workloads on the target device(s) gets affected thereby affecting their QoS service level agreements (SLAs).